home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / 80x0393.zip / NET_Q.ASM < prev    next >
Assembly Source File  |  1993-03-30  |  4KB  |  166 lines

  1. %PAGESIZE 55,200
  2. %SUBTTL "Get List of Queue Servers under Netware 3.11"
  3. ; Net_Q.Asm
  4. ;
  5. ; written on Tue  12-08-1992  by Ed Beroset
  6. ;
  7.  
  8.   .MODEL SMALL
  9.  
  10.   IDEAL
  11.  
  12.  STACK 100h
  13.  
  14. MACRO DOSint function
  15.   mov ah,function
  16.   int 21h
  17. ENDM
  18.  
  19.  DATASEG
  20.   STDOUT = 1       ;  the stdout device handle
  21.  
  22.   DOS_WRITE_TO_HANDLE = 040h  ; Write to File Handle
  23.   DOS_TERMINATE_EXE   = 04Ch  ; Terminate Program
  24.  
  25.   NOVELL_FUNCTION     = 0E3h
  26. ;
  27. ; Object Types
  28. ;   note that they're all big endian
  29. ;
  30.   OT_USER             = 0100h
  31.   OT_USER_GROUP       = 0200h
  32.   OT_PRINT_QUEUE      = 0300h ; Print Queue object type
  33.   OT_FILE_SERVER      = 0400h
  34.  
  35.  
  36. BragMsg DB     0dh,0ah,"NET_Q.EXE",9,"  written by Ed Beroset on Tue 12-08-1992"
  37.         DB     9,"Version 1.00",0dh,0ah
  38.         DB     9,9,"released to the public domain by the author",0dh,0ah,0dh,0ah
  39. BragLen =  $ - BragMsg
  40.  
  41. Crlf   DB      0dh,0ah,0
  42.  
  43.     STRUC SCAN_REQ          ; bindery ScanObject request packet structure
  44.     Length     DW  55       ; the length of this buffer
  45.     Function   DB  37h      ; scan object subfunction number
  46.     ObjectID   DD  -1       ; all ones for initial object search
  47.     ObjectType DW  -1       ; wild card -- looks for all objects
  48.     ObjNameLen DB  1        ; at least one character
  49.     ObjName    DB  47 DUP ('*') ; fill with wildcards to start
  50.     ENDS  SCAN_REQ
  51.  
  52.     STRUC SCAN_REP          ; bindery ScanObject request packet structure
  53.     Length     DW  57
  54.     ObjectID   DD  0       ; all ones for initial object search
  55.     ObjectType DW  0       ; wild card -- looks for all objects
  56.     ObjName    DB  48 DUP (0) ; fill with wildcards to start
  57.     ObjFlag    DB  0
  58.     ObjSecurty DB  0
  59.     ObjHasProp DB  0
  60.     ENDS  SCAN_REP
  61.  
  62.     ScanObjReq SCAN_REQ <>
  63.     ScanObjRep SCAN_REP <>
  64.  
  65.  CODESEG
  66.  
  67. ;
  68. ; This is the main part of the code
  69. ;
  70. ; Test code gets and prints the name of all print queues from the
  71. ; logged server -- NO ERROR CHECKING IS DONE, so be careful!
  72. ;
  73.  
  74. Start:
  75.   mov  ax,@data
  76.   mov  ds,ax                ; set up the data segment
  77.   mov  dx,OFFSET BragMsg    ; prepare to print out brag line(s)
  78.   mov  cx,BragLen
  79.   mov  bx,STDOUT            ; print to STDOUT
  80.   DOSint DOS_WRITE_TO_HANDLE
  81.   jc   Exit                 ; if carry is set, there was an error
  82.  
  83.   mov     [ScanObjReq.ObjectType],OT_PRINT_QUEUE
  84.   ;
  85.   ;  in this case the name is already set up, (a wildcard) but if a
  86.   ;  specific name were desired, it would be moved to
  87.   ;  ScanObjReq.ObjName, with the appropriate length (not including
  88.   ;  optional terminating NULL char set up in ScanObjReq.ObjNameLen.
  89.   ;
  90. @@MoreQueues:
  91.   call    BindScan
  92.   jc      Exit
  93.  
  94.   lea     dx,[ScanObjRep.ObjName]
  95.   call    Puts
  96.   lea     dx,[Crlf]
  97.   call    Puts
  98.   jmp     @@MoreQueues
  99.  
  100. Exit:
  101.   DOSint DOS_TERMINATE_EXE  ; return with error code preset in AL
  102.  
  103. ;
  104. ; BindScan
  105. ;
  106. ; scans the bindery for the object name set in the request buffer
  107. ;
  108. PROC    BindScan
  109.     push    ds si di es dx ax
  110.  
  111.     lea     si,[ScanObjReq]     ; point DS:DI to request buffer
  112.     mov     dx,ds
  113.     mov     es,dx
  114.     lea     di,[ScanObjRep]     ; point ES:SI to reply buffer
  115.     DOSint  NOVELL_FUNCTION
  116.     jb      @@Exit
  117.  
  118.     cld                         ; make sure to count up
  119.     mov     si,OFFSET ScanObjRep.ObjectID
  120.     mov     di,OFFSET ScanObjReq.ObjectID
  121.     movsw
  122.     movsw
  123.  
  124.     clc
  125.  
  126. @@Exit:
  127.     pop     ax dx es di si ds
  128.     ret
  129.  
  130. ENDP    BindScan     ;end of proc
  131.  
  132. ; Puts
  133. ;
  134. ; prints a NUL terminated string to stdout
  135. ;
  136. ; INPUTS: ds:dx  points to ASCIIZ string
  137. ;
  138. ; OUTPUTS: prints string to stdout
  139. ;
  140. ; RETURNS: ax = number of bytes actually printed
  141. ;          carry set on error
  142. ;
  143. ; DESTROYED: ax
  144. ;
  145. PROC Puts
  146.   push bx cx di es
  147.  
  148.   push ds
  149.   pop  es
  150.   mov  cx,0ffffh    ; maximum length of string
  151.   mov  di,dx
  152.   cld
  153.   mov  al,0         ; we're looking for NUL
  154.   repne scasb
  155.   dec  di
  156.   mov  cx,di
  157.   sub  cx,dx
  158.   mov  bx,STDOUT    ; write to this device
  159.   DOSint DOS_WRITE_TO_HANDLE
  160.  
  161.   pop  es di cx bx
  162.   ret
  163. ENDP Puts
  164.  
  165.   END Start
  166.